[SQL] 兩組日期區間進行比較


Posted by mike-hsieh on 2023-11-16

要在SQL中查詢兩個日期區間重疊的情況,可以使用邏輯條件來判斷區間A和區間B是否有交集。 假設每個區間由兩個日期構成:StartDate 和 EndDate,其中區間A由 A_StartDate 和 A_EndDate 定義,區間B由 B_StartDate 和 B_EndDate 定義。 您希望找到任何B區間內的日期在A區間內的情況。


一個區間內的日期在另一個區間內,當且僅當下列條件之一為真:

  • B區間的開始日期在A區間內。
  • B區間的結束日期在A區間內。
  • B區間完全包含A區間。


    這可以透過以下SQL條件表示:
    WHERE A_StartDate <= B_EndDate AND A_EndDate >= B_StartDate
    
    這個條件檢查A區間的開始日期是否在或在B區間結束之前,並且A區間的結束日期在或在B區間開始之後。 只要這兩個條件都滿足,兩個區間就有重疊。


    範例SQL查詢
    假設您有一個表格 Intervals,包含列 A_StartDate, A_EndDate, B_StartDate, B_EndDate,那麼查詢可以寫成:
    SELECT *
    FROM Intervals
    WHERE A_StartDate <= B_EndDate
    AND A_EndDate >= B_StartDate;
    
    這個查詢將傳回所有符合條件的行,即A和B區間至少有一天重疊的情況。


    以下附上圖片解釋:

#compare #date-ranges #sql-server







Related Posts

表單控制

表單控制

Debug: Aws connection problem

Debug: Aws connection problem

 ASI 自動分號插入

ASI 自動分號插入


Comments